package ch02;

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

/**
 * @author yang
 * @date 2024-04-03
 */
public class Sum {
    public int getSum(@Max(value=1000) int n) throws Exception {
        check(n);
        int sum = 0;
        for (int i = 1; i <= n; i++){
            sum += i ;
        }
        return sum;
    }


    public void check(int n)throws Exception {
        // 获取Sum类字节码对象
        Class<Sum> sumClass = Sum.class;
        // 获取getSum方法对象
        Method method = sumClass.getMethod("getSum", int.class);
        // 获取第一个参数对象
        Parameter parameter = method.getParameters()[0];
        // 判断是否有注解
        if (parameter.isAnnotationPresent(Max.class)) {
            // 判断输入参数是否大于注解的值
            if (n > parameter.getAnnotation(Max.class).value()){
                // 返回异常
                throw new RuntimeException("您输入的数字超过了"+parameter.getAnnotation(Max.class).value());
            }
        }
    }
}
